import { ApiProperty, ApiPropertyOptional } from '@midwayjs/swagger'
import { Rule, RuleType } from '@midwayjs/validate'

import { PageDTO } from '@/dto'

/**
 *  查找配置分页传输对象
 */
export class FindConfigPageDTO extends PageDTO implements IFindConfigPageDTO {
  @ApiPropertyOptional({ description: '配置名称' })
  @Rule(RuleType.string().empty(''))
  configName: string

  @ApiPropertyOptional({ description: '配置名称' })
  @Rule(RuleType.string().empty(''))
  configKey: string

  @ApiPropertyOptional({ description: '配置名称' })
  @Rule(RuleType.string().empty(''))
  configType: string

  @ApiPropertyOptional({ description: '配置名称' })
  @Rule(RuleType.date().empty(''))
  beginDate: Date

  @ApiPropertyOptional({ description: '结束时间' })
  @Rule(RuleType.date().empty(''))
  endDate: Date
}

/**
 * 添加配置传输对象
 */
export class CreateConfigDTO implements ICreateConfigDTO {
  @ApiProperty({ description: '配置名称' })
  @Rule(RuleType.string().required().error(new Error('参数名称不能为空')))
  configName: string

  @ApiProperty({ description: '配置键名' })
  @Rule(RuleType.string().required().error(new Error('参数键名不能为空')))
  configKey: string

  @ApiProperty({ description: '配置键值' })
  @Rule(RuleType.string().required().error(new Error('参数键值不能为空')))
  configValue: string

  @ApiProperty({ description: '配置类型' })
  @Rule(RuleType.string().empty(''))
  configType: string

  @ApiProperty({ description: '备注' })
  @Rule(RuleType.string().empty(''))
  remark: string
}

/** 更新配置传输对象 */
export class UpdateConfigDTO extends CreateConfigDTO {}
